3
תגובות

שאלה על Cron Jobs ב-Laravel.

פתח mtndiv ,
הוספתי לפריימוורק את ה-package מגיט: liebig/cron
הוא מסביר בגיט שהקרון עובד לפי הקוד הזה (בדף routes.php):
Route::get('/cron/run/c68pd2s4e363221a3064e8807da20s1sf', function () {
    Cron::add('example1', '* * * * *', function() {
    $u = User::find(5);
    $u->fullname = time();
    $u->save();
  });
    $report = Cron::run();
    print_r ($report);
});

אני בינתים מתכנת את הפרוייקט במחשב אז אין שום סיכוי שהקוד הזה יעבוד בוינדוס.
אני משתמש ב-Task Scheduler. עשיתי שהוא יפתח את הכרום כל דקה ויכנס לכתובת localhost:8000//cron/run/c68pd2s4e363221a3064e8807da20s1sf (הכתובת של הקרון).
אבל זה פתרון ממש גרוע כי כל שניה קופץ לי חלון.
אני רוצה שהוא יעשה את זה אוטומטית עם php.exe, השאלה היא איך? ניסיתי לעשות את זה וזה לא עבד.
ניסיתי ככה במדויק:
c:/wamp/bin/php/php5.4.12/php.exe localhost:8000//cron/run/c68pd2s4e363221a3064e8807da20s1sf

הצעות ? תודה רבה.

3 תשובות

avatar ענה intval ב 24 לנובמבר 2013 #

היית קרוב.
אתה צריך דפדפן שייגש לכתובת הזו.
ניסית את כרום, אבל יש לו חלון גרפים. תנסה דפדפן אחר.
דפדפן אחר יכול להיות wget, curl או משהו אחר. אתה יכול לכתוב סקריפט ב PHP שיתנהג כמו דפדפן וייגש אל הכתובת הזו עם file_get_contents או עם curl שלזה כנראה התכוונת בדוגמה האחרונה, רק שפספסת את הסקריפט עצמו.

בנוסף, זה נראה כאילו כל פעם שניגשים אל הכתובת הזו תתווסף רשומת קרון חדשה.
אין לי מושג למה אתה מגדיר קרונים מתוך הקוד. פשוט תגדיר אותו פעם אחת בשרת אחרי שיהיה לך שרת וזהו.
אופציה טובה יותר היא כמובן ישר לעבוד בלינוקס.

avatar ענה mtndiv ב 24 לנובמבר 2013 #

הרעיון עם הקובץ php שיתנהג כמו דפדפן מעולה אשתמש בו תודה רבה!
נ.ב. יש איזה שהיא אופציה לאבטח את הכתובת הזו שלא יכנסו אליה ישירות? משו בסגנון לבדוק את האייפי של השרת ורק אז לאשר להיכנס לקרון?

avatar ענה intval ב 24 לנובמבר 2013 #

כן. תבדוק שהגישה אל הקובץ מתבצעת מתוך 127.0.0.1 שזו בדרך כלל הכתובת של השרת.